package com.kuangstudy.framework.engine;

import com.kuangstudy.framework.view.ModelAndView;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import javax.servlet.ServletContext;
import java.io.IOException;
import java.io.Writer;

public class FreemakerEngine {


    private Configuration configuration;

    public FreemakerEngine(ServletContext servletContext) {
        try {
            configuration = new Configuration(Configuration.VERSION_2_3_28);
            // 指定模板文件从何处加载的数据源，这里设置成一个文件目录。
            configuration.setServletContextForTemplateLoading(servletContext, "/WEB-INF/templates");
            // 指定模板如何检索数据模型，这是一个高级的主题了… // 但先可以这么来用：
            configuration.setObjectWrapper(new DefaultObjectWrapper(Configuration.VERSION_2_3_28));
            // 设置编码
            configuration.setDefaultEncoding("UTF-8");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public void render(ModelAndView mv, Writer writer) throws IOException {
        try {
            Template temp = configuration.getTemplate(mv.view);
            temp.process(mv.model, writer);
        } catch (TemplateException ex) {
            ex.printStackTrace();
        }
    }
}
